#include "log.h"
#include <time.h>
#include <string.h>
#include <stdlib.h>

static FILE* log_fp = NULL;  // 日志文件句柄

// 初始化日志系统（返回0成功，-1失败）
int log_init(const char* log_file) {
    if (log_file == NULL) {
        log_fp = stdout;  // 默认为标准输出
        return 0;
    }
    
    // 尝试打开日志文件（追加模式）
    log_fp = fopen(log_file, "a");
    if (log_fp == NULL) {
        perror("日志文件打开失败");
        return -1;
    }
    return 0;
}

// 写入日志（内部实现）
void log_write(LogLevel level, const char* format, ...) {
    if (log_fp == NULL) return;  // 未初始化
    
    // 日志级别字符串
    const char* level_str[] = {"INFO", "ERROR", "WARN", "DEBUG"};
    
    // 获取当前时间
    time_t now = time(NULL);
    struct tm* tm_info = localtime(&now);
    char time_buf[32];
    strftime(time_buf, sizeof(time_buf), "%Y-%m-%d %H:%M:%S", tm_info);
    
    // 打印时间和级别
    fprintf(log_fp, "[%s] [%s] ", time_buf, level_str[level]);
    
    // 打印日志内容（可变参数）
    va_list args;
    va_start(args, format);
    vfprintf(log_fp, format, args);
    va_end(args);
    
    fprintf(log_fp, "\n");
    fflush(log_fp);  // 立即刷新缓冲区
}

// 关闭日志系统
void log_close() {
    if (log_fp != NULL && log_fp != stdout) {
        fclose(log_fp);
        log_fp = NULL;
    }
}

